using System;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Numerics;
using Nethereum.Hex.HexTypes;
using Nethereum.ABI.FunctionEncoding.Attributes;
using Nethereum.Web3;
using Nethereum.RPC.Eth.DTOs;
using Nethereum.Contracts.CQS;
using Nethereum.Contracts;
using System.Threading;

namespace Nethereum.ENS.PublicResolver.ContractDefinition
{


    public partial class PublicResolverDeployment : PublicResolverDeploymentBase
    {
        public PublicResolverDeployment() : base(BYTECODE) { }
        public PublicResolverDeployment(string byteCode) : base(byteCode) { }
    }

    public class PublicResolverDeploymentBase : ContractDeploymentMessage
    {
#if !BYTECODELITE
        public static string BYTECODE = "608060405234801561001057600080fd5b5060405161342e38038061342e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050613399806100956000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063623195b0116100c3578063bc1c58d11161007c578063bc1c58d114610aad578063c869023314610b54578063d5fa2b0014610b9d578063e59d895d14610beb578063f1cb7e0614610c62578063f86bc87914610d135761014d565b8063623195b01461073a578063691f3431146107c7578063773722131461086e5780638b95dd71146108f1578063a8fa5682146109c0578063ad5780af14610a7f5761014d565b806329cd62ea1161011557806329cd62ea14610461578063304e6ade146104a35780633b3b57de146105265780633e9ce794146105945780634cbf6ba4146105ee57806359d1d43c1461063e5761014d565b806301ffc9a7146101525780630af179d7146101b757806310f13a8c1461023a578063124a319c146103125780632203ab56146103a9575b600080fd5b61019d6004803603602081101561016857600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610d99565b604051808215151515815260200191505060405180910390f35b610238600480360360408110156101cd57600080fd5b8101908080359060200190929190803590602001906401000000008111156101f457600080fd5b82018360208201111561020657600080fd5b8035906020019184600183028401116401000000008311171561022857600080fd5b9091929391929390505050610dfa565b005b6103106004803603606081101561025057600080fd5b81019080803590602001909291908035906020019064010000000081111561027757600080fd5b82018360208201111561028957600080fd5b803590602001918460018302840111640100000000831117156102ab57600080fd5b9091929391929390803590602001906401000000008111156102cc57600080fd5b8201836020820111156102de57600080fd5b8035906020019184600183028401116401000000008311171561030057600080fd5b9091929391929390505050611073565b005b6103676004803603604081101561032857600080fd5b810190808035906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050611159565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103df600480360360408110156103bf57600080fd5b810190808035906020019092919080359060200190929190505050611656565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561042557808201518184015260208101905061040a565b50505050905090810190601f1680156104525780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6104a16004803603606081101561047757600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506117a5565b005b610524600480360360408110156104b957600080fd5b8101908080359060200190929190803590602001906401000000008111156104e057600080fd5b8201836020820111156104f257600080fd5b8035906020019184600183028401116401000000008311171561051457600080fd5b909192939192939050505061183d565b005b6105526004803603602081101561053c57600080fd5b81019080803590602001909291905050506118dd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105ec600480360360608110156105aa57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611914565b005b6106246004803603604081101561060457600080fd5b810190808035906020019092919080359060200190929190505050611a28565b604051808215151515815260200191505060405180910390f35b6106bf6004803603604081101561065457600080fd5b81019080803590602001909291908035906020019064010000000081111561067b57600080fd5b82018360208201111561068d57600080fd5b803590602001918460018302840111640100000000831117156106af57600080fd5b9091929391929390505050611a90565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106ff5780820151818401526020810190506106e4565b50505050905090810190601f16801561072c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107c56004803603606081101561075057600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561078157600080fd5b82018360208201111561079357600080fd5b803590602001918460018302840111640100000000831117156107b557600080fd5b9091929391929390505050611b6c565b005b6107f3600480360360208110156107dd57600080fd5b8101908080359060200190929190505050611bf9565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610833578082015181840152602081019050610818565b50505050905090810190601f1680156108605780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108ef6004803603604081101561088457600080fd5b8101908080359060200190929190803590602001906401000000008111156108ab57600080fd5b8201836020820111156108bd57600080fd5b803590602001918460018302840111640100000000831117156108df57600080fd5b9091929391929390505050611cae565b005b6109be6004803603606081101561090757600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561093857600080fd5b82018360208201111561094a57600080fd5b8035906020019184600183028401116401000000008311171561096c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611d4e565b005b610a04600480360360608110156109d657600080fd5b810190808035906020019092919080359060200190929190803561ffff169060200190929190505050611ebb565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a44578082015181840152602081019050610a29565b50505050905090810190601f168015610a715780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610aab60048036036020811015610a9557600080fd5b8101908080359060200190929190505050611fc0565b005b610ad960048036036020811015610ac357600080fd5b8101908080359060200190929190505050612027565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b19578082015181840152602081019050610afe565b50505050905090810190601f168015610b465780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610b8060048036036020811015610b6a57600080fd5b81019080803590602001909291905050506120dc565b604051808381526020018281526020019250505060405180910390f35b610be960048036036040811015610bb357600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612116565b005b610c6060048036036060811015610c0157600080fd5b810190808035906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612142565b005b610c9860048036036040811015610c7857600080fd5b810190808035906020019092919080359060200190929190505050612280565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610cd8578082015181840152602081019050610cbd565b50505050905090810190601f168015610d055780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610d7f60048036036060811015610d2957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612347565b604051808215151515815260200191505060405180910390f35b60006359d1d43c60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610df35750610df282612383565b5b9050919050565b82610e04816123e4565b610e0d57600080fd5b600080905060008090506060806000610e24613108565b610e7c60008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061257090919063ffffffff16565b90505b610e888161259a565b6110005760008661ffff161415610f2f5780604001519550610ea9816125b0565b9350836040516020018082805190602001908083835b60208310610ee25780518252602082019150602081019050602083039250610ebf565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001209150610f28816125e7565b9250610ff2565b6060610f3a826125b0565b9050816040015161ffff168761ffff16141580610f675750610f65818661261790919063ffffffff16565b155b15610ff057610fc98b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508a8b88602001510360008b511461263e565b816040015196508160200151955080945084805190602001209250610fed826125e7565b93505b505b610ffb81612abf565b610e7f565b50600083511115611068576110678984878b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505088898e8e905003600089511461263e565b5b505050505050505050565b8461107d816123e4565b61108657600080fd5b8282600960008981526020019081526020016000208787604051808383808284378083019250505092505050908152602001604051809103902091906110cd929190613153565b5084846040518083838082843780830192505050925050506040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a7550878760405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a3505050505050565b600080600660008581526020019081526020016000206000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461121e5780915050611650565b6000611229856118dd565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561126b57600092505050611650565b600060608273ffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b60405160240180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019150506040516020818303038152906040527f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061138c5780518252602082019150602081019050602083039250611369565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146113ec576040519150601f19603f3d011682016040523d82523d6000602084013e6113f1565b606091505b5091509150811580611404575060208151105b8061144b5750600060f81b81601f8151811061141c57fe5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b1561145d576000945050505050611650565b8273ffffffffffffffffffffffffffffffffffffffff168660405160240180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019150506040516020818303038152906040527f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106115735780518252602082019150602081019050602083039250611550565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146115d3576040519150601f19603f3d011682016040523d82523d6000602084013e6115d8565b606091505b5080925081935050508115806115ef575060208151105b806116365750600060f81b81601f8151811061160757fe5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b15611648576000945050505050611650565b829450505050505b92915050565b60006060600080600086815260200190815260200160002090506000600190505b848111611782576000858216141580156116b757506000826000838152602001908152602001600020805460018160011615610100020316600290049050115b156117765780826000838152602001908152602001600020808054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117645780601f1061173957610100808354040283529160200191611764565b820191906000526020600020905b81548152906001019060200180831161174757829003601f168201915b5050505050905093509350505061179e565b600181901b9050611677565b5060006040518060200160405280600081525081915092509250505b9250929050565b826117af816123e4565b6117b857600080fd5b604051806040016040528084815260200183815250600860008681526020019081526020016000206000820151816000015560208201518160010155905050837f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e468484604051808381526020018281526020019250505060405180910390a250505050565b82611847816123e4565b61185057600080fd5b82826002600087815260200190815260200160002091906118729291906131d3565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d7578848460405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a250505050565b600060606118ec83603c612280565b905060008151141561190257600091505061190f565b61190b81612bd3565b9150505b919050565b80600b600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16847fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df84604051808215151515815260200191505060405180910390a4505050565b60008060056000858152602001908152602001600020600060036000878152602001908152602001600020548152602001908152602001600020600084815260200190815260200160002060009054906101000a900461ffff1661ffff161415905092915050565b606060096000858152602001908152602001600020838360405180838380828437808301925050509250505090815260200160405180910390208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b5e5780601f10611b3357610100808354040283529160200191611b5e565b820191906000526020600020905b815481529060010190602001808311611b4157829003601f168201915b505050505090509392505050565b83611b76816123e4565b611b7f57600080fd5b600084600186031614611b9157600080fd5b828260008088815260200190815260200160002060008781526020019081526020016000209190611bc39291906131d3565b5083857faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe360405160405180910390a35050505050565b6060600760008381526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ca25780601f10611c7757610100808354040283529160200191611ca2565b820191906000526020600020905b815481529060010190602001808311611c8557829003601f168201915b50505050509050919050565b82611cb8816123e4565b611cc157600080fd5b8282600760008781526020019081526020016000209190611ce3929190613153565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f7848460405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a250505050565b82611d58816123e4565b611d6157600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af75284846040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611dcb578082015181840152602081019050611db0565b50505050905090810190601f168015611df85780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2603c831415611e7c57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2611e3a84612bd3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a25b816001600086815260200190815260200160002060008581526020019081526020016000209080519060200190611eb4929190613253565b5050505050565b606060046000858152602001908152602001600020600060036000878152602001908152602001600020548152602001908152602001600020600084815260200190815260200160002060008361ffff1661ffff1681526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611fb25780601f10611f8757610100808354040283529160200191611fb2565b820191906000526020600020905b815481529060010190602001808311611f9557829003601f168201915b505050505090509392505050565b80611fca816123e4565b611fd357600080fd5b6003600083815260200190815260200160002060008154809291906001019190505550817fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198360405160405180910390a25050565b6060600260008381526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120d05780601f106120a5576101008083540402835291602001916120d0565b820191906000526020600020905b8154815290600101906020018083116120b357829003601f168201915b50505050509050919050565b6000806008600084815260200190815260200160002060000154600860008581526020019081526020016000206001015491509150915091565b81612120816123e4565b61212957600080fd5b61213d83603c61213885612bf6565b611d4e565b505050565b8261214c816123e4565b61215557600080fd5b81600660008681526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916847f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa84604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a350505050565b60606001600084815260200190815260200160002060008381526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561233a5780601f1061230f5761010080835404028352916020019161233a565b820191906000526020600020905b81548152906001019060200180831161231d57829003601f168201915b5050505050905092915050565b600b602052826000526040600020602052816000526040600020602052806000526040600020600092509250509054906101000a900460ff1681565b600063c869023360e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806123dd57506123dc82612c41565b5b9050919050565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561245a57600080fd5b505afa15801561246e573d6000803e3d6000fd5b505050506040513d602081101561248457600080fd5b810190808051906020019092919050505090503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806125685750600b600084815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b915050919050565b612578613108565b828160000181905250818160c001818152505061259481612abf565b92915050565b6000816000015151826020015110159050919050565b60606125e082602001516125cc84600001518560200151612ca2565b8460000151612cfd9092919063ffffffff16565b9050919050565b60606126108260a001518360a001518460c00151038460000151612cfd9092919063ffffffff16565b9050919050565b60008151835114801561263657506126358360008460008751612d70565b5b905092915050565b6000600360008981526020019081526020016000205490506000878051906020012090506060612679868689612cfd9092919063ffffffff16565b90508315612861576000600460008c81526020019081526020016000206000858152602001908152602001600020600084815260200190815260200160002060008a61ffff1661ffff1681526020019081526020016000208054600181600116156101000203166002900490501461275557600560008b815260200190815260200160002060008481526020019081526020016000206000838152602001908152602001600020600081819054906101000a900461ffff16809291906001900391906101000a81548161ffff021916908361ffff160217905550505b600460008b81526020019081526020016000206000848152602001908152602001600020600083815260200190815260200160002060008961ffff1661ffff16815260200190815260200160002060006127af91906132d3565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a60405180806020018361ffff1661ffff168152602001828103825284818151815260200191508051906020019080838360005b83811015612821578082015181840152602081019050612806565b50505050905090810190601f16801561284e5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2612ab3565b6000600460008c81526020019081526020016000206000858152602001908152602001600020600084815260200190815260200160002060008a61ffff1661ffff168152602001908152602001600020805460018160011615610100020316600290049050141561293557600560008b815260200190815260200160002060008481526020019081526020016000206000838152602001908152602001600020600081819054906101000a900461ffff168092919060010191906101000a81548161ffff021916908361ffff160217905550505b80600460008c81526020019081526020016000206000858152602001908152602001600020600084815260200190815260200160002060008a61ffff1661ffff1681526020019081526020016000209080519060200190612997929190613253565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a8460405180806020018461ffff1661ffff16815260200180602001838103835286818151815260200191508051906020019080838360005b83811015612a0f5780820151818401526020810190506129f4565b50505050905090810190601f168015612a3c5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015612a75578082015181840152602081019050612a5a565b50505050905090810190601f168015612aa25780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a25b50505050505050505050565b8060c00151816020018181525050806000015151816020015110612ae257612bd0565b6000612af682600001518360200151612ca2565b8260200151019050612b15818360000151612d9490919063ffffffff16565b826040019061ffff16908161ffff1681525050600281019050612b45818360000151612d9490919063ffffffff16565b826060019061ffff16908161ffff1681525050600281019050612b75818360000151612dba90919063ffffffff16565b826080019063ffffffff16908163ffffffff16815250506004810190506000612bab828460000151612d9490919063ffffffff16565b61ffff169050600282019150818360a00181815250508082018360c001818152505050505b50565b60006014825114612be357600080fd5b600c6101000a6020830151049050919050565b606060146040519080825280601f01601f191660200182016040528015612c2c5781602001600182028038833980820191505090505b509050600c6101000a82026020820152919050565b600063691f343160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612c9b5750612c9a82612de2565b5b9050919050565b6000808290505b600115612cf15783518110612cba57fe5b6000612ccf8286612e5490919063ffffffff16565b60ff16905060018101820191506000811415612ceb5750612cf1565b50612ca9565b82810391505092915050565b606083518284011115612d0f57600080fd5b6060826040519080825280601f01601f191660200182016040528015612d445781602001600182028038833980820191505090505b5090506000806020830191508560208801019050612d63828287612e78565b8293505050509392505050565b6000612d7d848484612ec1565b612d88878785612ec1565b14905095945050505050565b60008251600283011115612da757600080fd5b61ffff8260028501015116905092915050565b60008251600483011115612dcd57600080fd5b63ffffffff8260048501015116905092915050565b6000604051808061334160249139602401905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612e4d5750612e4c82612ee4565b5b9050919050565b6000828281518110612e6257fe5b602001015160f81c60f81b60f81c905092915050565b5b60208110612e9c5781518352602083019250602082019150602081039050612e79565b60006001826020036101000a0390508019835116818551168181178652505050505050565b600083518284011115612ed357600080fd5b818360208601012090509392505050565b600063a8fa568260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612f3e5750612f3d82612f45565b5b9050919050565b600063bc1c58d160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612f9f5750612f9e82612fa6565b5b9050919050565b6000633b3b57de60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061303f575063f1cb7e0660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061304f575061304e82613056565b5b9050919050565b6000632203ab5660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806130b057506130af826130b7565b5b9050919050565b60006301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061319457803560ff19168380011785556131c2565b828001600101855582156131c2579182015b828111156131c15782358255916020019190600101906131a6565b5b5090506131cf919061331b565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061321457803560ff1916838001178555613242565b82800160010185558215613242579182015b82811115613241578235825591602001919060010190613226565b5b50905061324f919061331b565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061329457805160ff19168380011785556132c2565b828001600101855582156132c2579182015b828111156132c15782518255916020019190600101906132a6565b5b5090506132cf919061331b565b5090565b50805460018160011615610100020316600290046000825580601f106132f95750613318565b601f016020900490600052602060002090810190613317919061331b565b5b50565b61333d91905b80821115613339576000816000905550600101613321565b5090565b9056fe696e74657266616365496d706c656d656e74657228627974657333322c62797465733429a265627a7a72315820e37e49339c407f277a18b1276335d80f06f86465250ddd0bb061d5fb5f0892b264736f6c63430005100032";
#else
        public static string BYTECODE = "";
#endif
        public PublicResolverDeploymentBase() : base(BYTECODE) { }
        public PublicResolverDeploymentBase(string byteCode) : base(byteCode) { }
        [Parameter("address", "_ens", 1)]
        public virtual string Ens { get; set; }
    }

    public partial class ABIFunction : ABIFunctionBase { }

    [Function("ABI", typeof(ABIOutputDTO))]
    public class ABIFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "node", 1)]
        public virtual byte[] Node { get; set; }
        [Parameter("uint256", "contentTypes", 2)]
        public virtual BigInteger ContentTypes { get; set; }
    }

    public partial class AddrFunction : AddrFunctionBase { }

    [Function("addr", "address")]
    public class AddrFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "node", 1)]
        public virtual byte[] Node { get; set; }
    }

    public partial class AddrFunction2 : AddrFunctionBase2 { }

    [Function("addr", "bytes")]
    public class AddrFunctionBase2 : FunctionMessage
    {
        [Parameter("bytes32", "node", 1)]
        public virtual byte[] Node { get; set; }
        [Parameter("uint256", "coinType", 2)]
        public virtual BigInteger CoinType { get; set; }
    }

    public partial class AuthorisationsFunction : AuthorisationsFunctionBase { }

    [Function("authorisations", "bool")]
    public class AuthorisationsFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "", 1)]
        public virtual byte[] ReturnValue1 { get; set; }
        [Parameter("address", "", 2)]
        public virtual string ReturnValue2 { get; set; }
        [Parameter("address", "", 3)]
        public virtual string ReturnValue3 { get; set; }
    }

    public partial class ClearDNSZoneFunction : ClearDNSZoneFunctionBase { }

    [Function("clearDNSZone")]
    public class ClearDNSZoneFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "node", 1)]
        public virtual byte[] Node { get; set; }
    }

    public partial class ContenthashFunction : ContenthashFunctionBase { }

    [Function("contenthash", "bytes")]
    public class ContenthashFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "node", 1)]
        public virtual byte[] Node { get; set; }
    }

    public partial class DnsRecordFunction : DnsRecordFunctionBase { }

    [Function("dnsRecord", "bytes")]
    public class DnsRecordFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "node", 1)]
        public virtual byte[] Node { get; set; }
        [Parameter("bytes32", "name", 2)]
        public virtual byte[] Name { get; set; }
        [Parameter("uint16", "resource", 3)]
        public virtual ushort Resource { get; set; }
    }

    public partial class HasDNSRecordsFunction : HasDNSRecordsFunctionBase { }

    [Function("hasDNSRecords", "bool")]
    public class HasDNSRecordsFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "node", 1)]
        public virtual byte[] Node { get; set; }
        [Parameter("bytes32", "name", 2)]
        public virtual byte[] Name { get; set; }
    }

    public partial class InterfaceImplementerFunction : InterfaceImplementerFunctionBase { }

    [Function("interfaceImplementer", "address")]
    public class InterfaceImplementerFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "node", 1)]
        public virtual byte[] Node { get; set; }
        [Parameter("bytes4", "interfaceID", 2)]
        public virtual byte[] InterfaceID { get; set; }
    }

    public partial class NameFunction : NameFunctionBase { }

    [Function("name", "string")]
    public class NameFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "node", 1)]
        public virtual byte[] Node { get; set; }
    }

    public partial class PubkeyFunction : PubkeyFunctionBase { }

    [Function("pubkey", typeof(PubkeyOutputDTO))]
    public class PubkeyFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "node", 1)]
        public virtual byte[] Node { get; set; }
    }

    public partial class SetABIFunction : SetABIFunctionBase { }

    [Function("setABI")]
    public class SetABIFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "node", 1)]
        public virtual byte[] Node { get; set; }
        [Parameter("uint256", "contentType", 2)]
        public virtual BigInteger ContentType { get; set; }
        [Parameter("bytes", "data", 3)]
        public virtual byte[] Data { get; set; }
    }

    public partial class SetAddrFunction : SetAddrFunctionBase { }

    [Function("setAddr")]
    public class SetAddrFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "node", 1)]
        public virtual byte[] Node { get; set; }
        [Parameter("uint256", "coinType", 2)]
        public virtual BigInteger CoinType { get; set; }
        [Parameter("bytes", "a", 3)]
        public virtual byte[] A { get; set; }
    }

    public partial class SetAddrFunction2 : SetAddrFunctionBase2 { }

    [Function("setAddr")]
    public class SetAddrFunctionBase2 : FunctionMessage
    {
        [Parameter("bytes32", "node", 1)]
        public virtual byte[] Node { get; set; }
        [Parameter("address", "a", 2)]
        public virtual string A { get; set; }
    }

    public partial class SetAuthorisationFunction : SetAuthorisationFunctionBase { }

    [Function("setAuthorisation")]
    public class SetAuthorisationFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "node", 1)]
        public virtual byte[] Node { get; set; }
        [Parameter("address", "target", 2)]
        public virtual string Target { get; set; }
        [Parameter("bool", "isAuthorised", 3)]
        public virtual bool IsAuthorised { get; set; }
    }

    public partial class SetContenthashFunction : SetContenthashFunctionBase { }

    [Function("setContenthash")]
    public class SetContenthashFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "node", 1)]
        public virtual byte[] Node { get; set; }
        [Parameter("bytes", "hash", 2)]
        public virtual byte[] Hash { get; set; }
    }

    public partial class SetDNSRecordsFunction : SetDNSRecordsFunctionBase { }

    [Function("setDNSRecords")]
    public class SetDNSRecordsFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "node", 1)]
        public virtual byte[] Node { get; set; }
        [Parameter("bytes", "data", 2)]
        public virtual byte[] Data { get; set; }
    }

    public partial class SetInterfaceFunction : SetInterfaceFunctionBase { }

    [Function("setInterface")]
    public class SetInterfaceFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "node", 1)]
        public virtual byte[] Node { get; set; }
        [Parameter("bytes4", "interfaceID", 2)]
        public virtual byte[] InterfaceID { get; set; }
        [Parameter("address", "implementer", 3)]
        public virtual string Implementer { get; set; }
    }

    public partial class SetNameFunction : SetNameFunctionBase { }

    [Function("setName")]
    public class SetNameFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "node", 1)]
        public virtual byte[] Node { get; set; }
        [Parameter("string", "name", 2)]
        public virtual string Name { get; set; }
    }

    public partial class SetPubkeyFunction : SetPubkeyFunctionBase { }

    [Function("setPubkey")]
    public class SetPubkeyFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "node", 1)]
        public virtual byte[] Node { get; set; }
        [Parameter("bytes32", "x", 2)]
        public virtual byte[] X { get; set; }
        [Parameter("bytes32", "y", 3)]
        public virtual byte[] Y { get; set; }
    }

    public partial class SetTextFunction : SetTextFunctionBase { }

    [Function("setText")]
    public class SetTextFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "node", 1)]
        public virtual byte[] Node { get; set; }
        [Parameter("string", "key", 2)]
        public virtual string Key { get; set; }
        [Parameter("string", "value", 3)]
        public virtual string Value { get; set; }
    }

    public partial class SupportsInterfaceFunction : SupportsInterfaceFunctionBase { }

    [Function("supportsInterface", "bool")]
    public class SupportsInterfaceFunctionBase : FunctionMessage
    {
        [Parameter("bytes4", "interfaceID", 1)]
        public virtual byte[] InterfaceID { get; set; }
    }

    public partial class TextFunction : TextFunctionBase { }

    [Function("text", "string")]
    public class TextFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "node", 1)]
        public virtual byte[] Node { get; set; }
        [Parameter("string", "key", 2)]
        public virtual string Key { get; set; }
    }

    public partial class ABIChangedEventDTO : ABIChangedEventDTOBase { }

    [Event("ABIChanged")]
    public class ABIChangedEventDTOBase : IEventDTO
    {
        [Parameter("bytes32", "node", 1, true)]
        public virtual byte[] Node { get; set; }
        [Parameter("uint256", "contentType", 2, true)]
        public virtual BigInteger ContentType { get; set; }
    }

    public partial class AddrChangedEventDTO : AddrChangedEventDTOBase { }

    [Event("AddrChanged")]
    public class AddrChangedEventDTOBase : IEventDTO
    {
        [Parameter("bytes32", "node", 1, true)]
        public virtual byte[] Node { get; set; }
        [Parameter("address", "a", 2, false)]
        public virtual string A { get; set; }
    }

    public partial class AddressChangedEventDTO : AddressChangedEventDTOBase { }

    [Event("AddressChanged")]
    public class AddressChangedEventDTOBase : IEventDTO
    {
        [Parameter("bytes32", "node", 1, true)]
        public virtual byte[] Node { get; set; }
        [Parameter("uint256", "coinType", 2, false)]
        public virtual BigInteger CoinType { get; set; }
        [Parameter("bytes", "newAddress", 3, false)]
        public virtual byte[] NewAddress { get; set; }
    }

    public partial class AuthorisationChangedEventDTO : AuthorisationChangedEventDTOBase { }

    [Event("AuthorisationChanged")]
    public class AuthorisationChangedEventDTOBase : IEventDTO
    {
        [Parameter("bytes32", "node", 1, true)]
        public virtual byte[] Node { get; set; }
        [Parameter("address", "owner", 2, true)]
        public virtual string Owner { get; set; }
        [Parameter("address", "target", 3, true)]
        public virtual string Target { get; set; }
        [Parameter("bool", "isAuthorised", 4, false)]
        public virtual bool IsAuthorised { get; set; }
    }

    public partial class ContenthashChangedEventDTO : ContenthashChangedEventDTOBase { }

    [Event("ContenthashChanged")]
    public class ContenthashChangedEventDTOBase : IEventDTO
    {
        [Parameter("bytes32", "node", 1, true)]
        public virtual byte[] Node { get; set; }
        [Parameter("bytes", "hash", 2, false)]
        public virtual byte[] Hash { get; set; }
    }

    public partial class DNSRecordChangedEventDTO : DNSRecordChangedEventDTOBase { }

    [Event("DNSRecordChanged")]
    public class DNSRecordChangedEventDTOBase : IEventDTO
    {
        [Parameter("bytes32", "node", 1, true)]
        public virtual byte[] Node { get; set; }
        [Parameter("bytes", "name", 2, false)]
        public virtual byte[] Name { get; set; }
        [Parameter("uint16", "resource", 3, false)]
        public virtual ushort Resource { get; set; }
        [Parameter("bytes", "record", 4, false)]
        public virtual byte[] Record { get; set; }
    }

    public partial class DNSRecordDeletedEventDTO : DNSRecordDeletedEventDTOBase { }

    [Event("DNSRecordDeleted")]
    public class DNSRecordDeletedEventDTOBase : IEventDTO
    {
        [Parameter("bytes32", "node", 1, true)]
        public virtual byte[] Node { get; set; }
        [Parameter("bytes", "name", 2, false)]
        public virtual byte[] Name { get; set; }
        [Parameter("uint16", "resource", 3, false)]
        public virtual ushort Resource { get; set; }
    }

    public partial class DNSZoneClearedEventDTO : DNSZoneClearedEventDTOBase { }

    [Event("DNSZoneCleared")]
    public class DNSZoneClearedEventDTOBase : IEventDTO
    {
        [Parameter("bytes32", "node", 1, true)]
        public virtual byte[] Node { get; set; }
    }

    public partial class InterfaceChangedEventDTO : InterfaceChangedEventDTOBase { }

    [Event("InterfaceChanged")]
    public class InterfaceChangedEventDTOBase : IEventDTO
    {
        [Parameter("bytes32", "node", 1, true)]
        public virtual byte[] Node { get; set; }
        [Parameter("bytes4", "interfaceID", 2, true)]
        public virtual byte[] InterfaceID { get; set; }
        [Parameter("address", "implementer", 3, false)]
        public virtual string Implementer { get; set; }
    }

    public partial class NameChangedEventDTO : NameChangedEventDTOBase { }

    [Event("NameChanged")]
    public class NameChangedEventDTOBase : IEventDTO
    {
        [Parameter("bytes32", "node", 1, true)]
        public virtual byte[] Node { get; set; }
        [Parameter("string", "name", 2, false)]
        public virtual string Name { get; set; }
    }

    public partial class PubkeyChangedEventDTO : PubkeyChangedEventDTOBase { }

    [Event("PubkeyChanged")]
    public class PubkeyChangedEventDTOBase : IEventDTO
    {
        [Parameter("bytes32", "node", 1, true)]
        public virtual byte[] Node { get; set; }
        [Parameter("bytes32", "x", 2, false)]
        public virtual byte[] X { get; set; }
        [Parameter("bytes32", "y", 3, false)]
        public virtual byte[] Y { get; set; }
    }

    public partial class TextChangedEventDTO : TextChangedEventDTOBase { }

    [Event("TextChanged")]
    public class TextChangedEventDTOBase : IEventDTO
    {
        [Parameter("bytes32", "node", 1, true)]
        public virtual byte[] Node { get; set; }
        [Parameter("string", "indexedKey", 2, true)]
        public virtual string IndexedKey { get; set; }
        [Parameter("string", "key", 3, false)]
        public virtual string Key { get; set; }
    }

    public partial class ABIOutputDTO : ABIOutputDTOBase { }

    [FunctionOutput]
    public class ABIOutputDTOBase : IFunctionOutputDTO
    {
        [Parameter("uint256", "", 1)]
        public virtual BigInteger ReturnValue1 { get; set; }
        [Parameter("bytes", "", 2)]
        public virtual byte[] ReturnValue2 { get; set; }
    }

    public partial class AddrOutputDTO : AddrOutputDTOBase { }

    [FunctionOutput]
    public class AddrOutputDTOBase : IFunctionOutputDTO
    {
        [Parameter("address", "", 1)]
        public virtual string ReturnValue1 { get; set; }
    }

    public partial class AddrOutputDTO2 : AddrOutputDTOBase2 { }

    [FunctionOutput]
    public class AddrOutputDTOBase2 : IFunctionOutputDTO
    {
        [Parameter("bytes", "", 1)]
        public virtual byte[] ReturnValue1 { get; set; }
    }

    public partial class AuthorisationsOutputDTO : AuthorisationsOutputDTOBase { }

    [FunctionOutput]
    public class AuthorisationsOutputDTOBase : IFunctionOutputDTO
    {
        [Parameter("bool", "", 1)]
        public virtual bool ReturnValue1 { get; set; }
    }



    public partial class ContenthashOutputDTO : ContenthashOutputDTOBase { }

    [FunctionOutput]
    public class ContenthashOutputDTOBase : IFunctionOutputDTO
    {
        [Parameter("bytes", "", 1)]
        public virtual byte[] ReturnValue1 { get; set; }
    }

    public partial class DnsRecordOutputDTO : DnsRecordOutputDTOBase { }

    [FunctionOutput]
    public class DnsRecordOutputDTOBase : IFunctionOutputDTO
    {
        [Parameter("bytes", "", 1)]
        public virtual byte[] ReturnValue1 { get; set; }
    }

    public partial class HasDNSRecordsOutputDTO : HasDNSRecordsOutputDTOBase { }

    [FunctionOutput]
    public class HasDNSRecordsOutputDTOBase : IFunctionOutputDTO
    {
        [Parameter("bool", "", 1)]
        public virtual bool ReturnValue1 { get; set; }
    }

    public partial class InterfaceImplementerOutputDTO : InterfaceImplementerOutputDTOBase { }

    [FunctionOutput]
    public class InterfaceImplementerOutputDTOBase : IFunctionOutputDTO
    {
        [Parameter("address", "", 1)]
        public virtual string ReturnValue1 { get; set; }
    }

    public partial class NameOutputDTO : NameOutputDTOBase { }

    [FunctionOutput]
    public class NameOutputDTOBase : IFunctionOutputDTO
    {
        [Parameter("string", "", 1)]
        public virtual string ReturnValue1 { get; set; }
    }

    public partial class PubkeyOutputDTO : PubkeyOutputDTOBase { }

    [FunctionOutput]
    public class PubkeyOutputDTOBase : IFunctionOutputDTO
    {
        [Parameter("bytes32", "x", 1)]
        public virtual byte[] X { get; set; }
        [Parameter("bytes32", "y", 2)]
        public virtual byte[] Y { get; set; }
    }


    public partial class SupportsInterfaceOutputDTO : SupportsInterfaceOutputDTOBase { }

    [FunctionOutput]
    public class SupportsInterfaceOutputDTOBase : IFunctionOutputDTO
    {
        [Parameter("bool", "", 1)]
        public virtual bool ReturnValue1 { get; set; }
    }

    public partial class TextOutputDTO : TextOutputDTOBase { }

    [FunctionOutput]
    public class TextOutputDTOBase : IFunctionOutputDTO
    {
        [Parameter("string", "", 1)]
        public virtual string ReturnValue1 { get; set; }
    }
}
